/***********************************************************************************
 * 文件名： mcu.h
 * 版本：1
 * 说明：
 * 		MDT10F272 驱动支持包总头文件。包含了其它外设驱动的头文件。Mcu_Init 将按照配置文
 *  初始化MCU时钟和中断使能状态。提供的其它 API 请参见本文件中的说明
 * 修改记录：
 * 	2021/07/14: 初版
***********************************************************************************/
#ifndef _MCU_H_
#define _MCU_H_

#include "mcu_typedef.h"
#include "mcu_mdt10f272.h"        // 官方提供的MCU型号头文
#include "bsp-mdt10f272_config.h" // MCU驱动配置文件
#include "mcu_function_define.h"  // 一些操作MCU的伪函数


typedef enum _fsys_source
{
    MCU_FSYS_IRCL_32K = (0<<4),
    MCU_FSYS_IRCH_DIV64 = (1<<4),
    MCU_FSYS_IRCH_DIV32 = (2<<4),
    MCU_FSYS_IRCH_DIV16 = (3<<4),
    MCU_FSYS_IRCH_DIV8 = (4<<4),
    MCU_FSYS_IRCH_DIV4 = (5<<4),
    MCU_FSYS_IRCH_DIV2 = (6<<4),
    MCU_FSYS_IRCH = (7<<4)
}fsys_source_t;



// 参数检查与计算

#if (MCU_FSYS_SEL == 0)
// FSYS频率 KHZ
#define MCU_FSYS 32
#else
// FSYS频率 KHZ
//#define MCU_FSYS    (MCU_FOSC*1000/(2^(7-MCU_FSYS_SEL)))
#endif


// MCU时钟和核心外设初始化
#define Mcu_Init()                                                      \
{                                                                   \
    OSCCON = (MCU_FOSC_TRIM_SEL<<1)|(MCU_FSYS_SEL << 4);\
    INTS = MCU_INTS_INIT;                                           \
    PIFB1 = MCU_PIFB1_INIT;                                         \
    PIFB0 = MCU_PIFB0_INIT;                                         \
}

// 运行系统嘀嗒定时器，仅提供给Polsys调用
#define Mcu_TickStart() Tim0_Init()

#define Mcu_EnableInt() GIE = 1
// 开总中断

// 关总中断
#define Mcu_DisableInt() GIE = 0

void Mcu_SetFsys(fsys_source_t fsys_source);

#include "mcu_timer.h" // 这些头文件在这里可能不太合适，暂时没有找到更好的地方
#include "mcu_ad.h"
#include "mcu_wdt.h"
// #include "mcu_delay.h"
// #include "mcu_power.h"

#endif
